--- @since 25.5.31
--- @sync entry
local function setup(self, opts)
    -- 可以添加配置选项
end

local function entry(self)
    local h = cx.active.current.hovered
    if not h then return end
    
    -- 检查是否在 nvim 环境中
    local in_nvim = os.getenv("NVIM") ~= nil
    
    if h.cha.is_dir then
        local path = tostring(h.url)
        
        if in_nvim then
            -- 在 nvim 中，只需要切换目录并退出 yazi
            ya.manager_emit("shell", {
                "echo 'cd " .. path .. "' > /tmp/yazi_nvim_cmd",
                block = false,
                confirm = false,
            })
            ya.manager_emit("quit", {})
        else
            -- 不在 nvim 中，正常启动新实例
            local escaped_path = path:gsub("'", "'\"'\"'")
            ya.manager_emit("shell", {
                "cd '" .. escaped_path .. "' && nvim .",
                block = true,
                confirm = false,
            })
        end
    else
        local file_path = tostring(h.url)
        
        if in_nvim then
            -- 在 nvim 中，写入文件路径并退出 yazi
            ya.manager_emit("shell", {
                "echo 'edit " .. file_path .. "' > /tmp/yazi_nvim_cmd",
                block = false,
                confirm = false,
            })
            ya.manager_emit("quit", {})
        else
            -- 不在 nvim 中，正常启动新实例
            local dir_path = tostring(h.url:parent())
            local escaped_dir = dir_path:gsub("'", "'\"'\"'")
            local escaped_file = file_path:gsub("'", "'\"'\"'")
            ya.manager_emit("shell", {
                "cd '" .. escaped_dir .. "' && nvim '" .. escaped_file .. "'",
                block = true,
                confirm = false,
            })
        end
    end
end

return { entry = entry, setup = setup }
